﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestTipoPagoDAO
    {
        private Tipo_PagoDAO tipo_PagoDAO = new Tipo_PagoDAO();
       
        [Test]
        public void TestCrear()
        {

            // 1. Instanciando el objeto TO
            Tipo_Pago nuevoTipo_Pago = new Tipo_Pago();

            nuevoTipo_Pago.Codigo_Tipo_Pago = 1;
            nuevoTipo_Pago.Descripcion = "Efectivo";
            nuevoTipo_Pago.Estado = "Activo";
            // 2. Llamada al método del DAO a probar
            Tipo_Pago Tipo_PagoCreado = tipo_PagoDAO.Crear(nuevoTipo_Pago);
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_PagoCreado);
            Assert.AreEqual(nuevoTipo_Pago.Codigo_Tipo_Pago, Tipo_PagoCreado.Codigo_Tipo_Pago);
            Assert.IsNotNull(Tipo_PagoCreado.Descripcion);
        }
        [Test]
        public void TestObtener()
        {
            int _cod_Tipo_Pago;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Tipo_Pago = 1;
            Tipo_Pago Tipo_PagoConsulta = tipo_PagoDAO.Obtener(_cod_Tipo_Pago);           
            
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_PagoConsulta);
            Assert.AreEqual(Tipo_PagoConsulta.Codigo_Tipo_Pago, _cod_Tipo_Pago);
            Assert.IsNotNull(Tipo_PagoConsulta.Descripcion);
        }

        [Test]
        public void TestModificar()
        {

            // 1. Instanciando el objeto TO
            Tipo_Pago oTipo_Pago = new Tipo_Pago();

            oTipo_Pago.Codigo_Tipo_Pago = 1;
            oTipo_Pago.Descripcion = "Transferencia";
            oTipo_Pago.Estado = "Activo";
            
            // 2. Llamada al método del DAO a probar
            Tipo_Pago Tipo_PagoModificado = tipo_PagoDAO.Modificar(oTipo_Pago);
            // 4. Implementar las validaciones
            Assert.NotNull(Tipo_PagoModificado);
            Assert.AreEqual(oTipo_Pago.Descripcion, Tipo_PagoModificado.Descripcion);
            Assert.IsNotNull(Tipo_PagoModificado.Descripcion);
        }

        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Tipo_Pago oTipo_Pago = new Tipo_Pago();
            oTipo_Pago.Codigo_Tipo_Pago = 2;
            // 2. Llamada al método del DAO a probar
            tipo_PagoDAO.Eliminar(oTipo_Pago);
            // 4. Implementar las validaciones
            Tipo_Pago Tipo_PagoConsulta = tipo_PagoDAO.Obtener(oTipo_Pago.Codigo_Tipo_Pago);
            Assert.IsNull(Tipo_PagoConsulta);
        }

        [Test]
        public void TestListarTipoPagoPorDescripcion()
        {
            string descripcion = "TAR";
            ICollection<Tipo_Pago> LTipoPago = tipo_PagoDAO.ListarTipoPagoPorDescripcion(descripcion);
            Assert.NotNull(LTipoPago);
            Assert.Greater(LTipoPago.Count, 0);
        }

    }
}